package com.linxianqin.springbootVue.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.linxianqin.springbootVue.domain.convert.SysLogininforConvert;
import com.linxianqin.springbootVue.domain.dto.SysLogininforDTO;
import com.linxianqin.springbootVue.domain.entity.SysLogininfor;
import com.linxianqin.springbootVue.domain.query.SysLogininforQuery;
import com.linxianqin.springbootVue.mapper.SysLogininforMapper;
import com.linxianqin.springbootVue.service.SysLogininforService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linxianqin.springbootVue.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 系统访问记录 服务实现类
 * </p>
 *
 * @author lxq
 * @since 2020-12-13
 */
@Slf4j
@Service
public class SysLogininforServiceImpl extends ServiceImpl<SysLogininforMapper, SysLogininfor> implements SysLogininforService {

    @Override
    public void insertLogininfor(SysLogininforDTO logininforDTO) {
        SysLogininfor sysLogininfor = SysLogininforConvert.INSTANCE.dto2entity(logininforDTO);
       // log.info("打印转化信息：{}",SysLogininforConvert.INSTANCE.dto2entity(logininforDTO).toString());
        baseMapper.insert(sysLogininfor);
    }

    /**
     * 查询系统登录日志集合
     * @param query 访问日志对象
     * @return 登录记录集合
     */
    @Override
    public Page<SysLogininforDTO> selectLogininforPage(Page<SysLogininforDTO>page, SysLogininforQuery query) {
        Page<SysLogininfor> entityPage = SysLogininforConvert.INSTANCE.dto2entity(page);
        LambdaQueryWrapper<SysLogininfor> queryWrapper=new QueryWrapper<SysLogininfor>().lambda();
        if (query.getStatus()!=null){
            queryWrapper.eq(SysLogininfor::getStatus,query.getStatus());
        }
        if (query.getIpaddr()!=null){
            queryWrapper.like(SysLogininfor::getIpaddr,query.getIpaddr());
        }
        if (query.getUserName()!=null){
            queryWrapper.like(SysLogininfor::getUserName,query.getUserName());
        }
        if (query.getParams()!=null){
            Map<String, Object> params = query.getParams();
            Object beginTime = params.get("beginTime");
            if (beginTime!=null){
                queryWrapper.ge(SysLogininfor::getLoginTime,beginTime);
            }
            Object endTime = params.get("endTime");
            if (beginTime!=null){
                endTime = DateUtils.addOneDay(DateUtils.dateTime("yyyy-MM-dd", endTime.toString()));
                queryWrapper.le(SysLogininfor::getLoginTime,endTime);
            };
        }
        Page<SysLogininfor> selectPage = baseMapper.selectPage(entityPage, queryWrapper);
        return SysLogininforConvert.INSTANCE.entity2dto(selectPage);
    }

    /**
     * 清空系统登录日志
     */
    @Override
    public void cleanLogininfor() {
        baseMapper.cleanLogininfor();
    }


}
